home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / amok_lha / amok18.lha / Profile / Demos / Prim3.pro < prev    next >
Text File  |  1993-08-15  |  760b  |  43 lines

  1. MODULE Prim3;
  2.  
  3. FROM InOut IMPORT WriteInt;
  4.  
  5. CONST n = 1000;
  6.  
  7. VAR i,f: INTEGER;
  8. (* f: min = 0, max = 168 *)
  9. (* i: min = 2, max = 1000 *)
  10.     prims: ARRAY[2..n] OF BOOLEAN;
  11.     found: ARRAY[0..n] OF INTEGER;
  12.  
  13. PROCEDURE Mark(num: LONGINT; d: INTEGER);
  14. (* num: min = 2, max = 29791 *)
  15. (* d: min = 0, max = 10 *)
  16. BEGIN
  17.  (* 660 Aufrufe *)
  18.   REPEAT
  19.  (* 1491 Durchläufe *)
  20.     IF (d<f) AND (num*found[d+1]<=n) THEN
  21.       Mark(num,d+1)
  22.     ELSE
  23.       prims[num] := FALSE
  24.     END;
  25.     num := num * found[d];
  26.   UNTIL num>n;
  27. END Mark;
  28.  
  29. BEGIN
  30.   FOR i:=2 TO n DO  (* 999 Durchläufe *)
  31. prims[i] := TRUE END;
  32.   f := 0;
  33.   FOR i:=2 TO n DO
  34.  (* 999 Durchläufe *)
  35.     IF prims[i] THEN
  36.       found[f] := i; WriteInt(i,5);
  37.       Mark(i,0);
  38.       INC(f);
  39.     END;
  40.   END;
  41. END Prim3.
  42.  
  43.